<?php
/**[文档类型模型]
 * @Author: 976123967@qq.com
 * @Date:   2014-11-08 15:04:59
 * @Last Modified by:   Administrator
 * @Last Modified time: 2014-12-26 13:48:26
 */
class TypeModel extends Model{
	protected $tableName = 'type';
	public $type;

	/**
	 * [_initialize 初始化]
	 * @return [type] [description]
	 */
	public function _initialize()
	{
		$this->type = S('type');
	}

	// 自动验证
	/* array(验证字段,验证规则,错误提示,[验证条件,附加规则,验证时间])
	*
	*  验证条件
	*  Model::EXISTS_VALIDATE 或者0 存在字段就验证 （默认）
	*  Model::MUST_VALIDATE 或者1 必须验证
	*  Model::VALUE_VALIDATE或者2 值不为空的时候验证
	*
	*  验证时间
	*  Model:: MODEL_INSERT 或者1新增数据时候验证
	*  Model:: MODEL_UPDATE 或者2编辑数据时候验证
	*  Model:: MODEL_BOTH 或者3 全部情况下验证（默认）
	* */
	protected $_validate = array(
		array('typename','require','请输入类型名称',1,'regex',3),
		array('typename','check_typename','类型名称已经存在',1,'callback',3)
	);

	/**
	 * [check_typename 验证是否已经存在]
	 * @param  [type] $con [description]
	 * @return [type]      [description]
	 */
	public function check_typename($con)
	{
		$where['typename'] = $con;
		$typeid = I('post.typeid');
		if($typeid)
			$where['typeid'] = array('neq',$typeid);
		if($this->where($where)->getField('typeid'))
		{
			return false;
		}
		else
			return true;
	}



	/**
	 * [update_cache 更新缓存]
	 * @return [type] [description]
	 */
	public function update_cache()
	{
		$data = $this->order(array('typeid'=>'asc'))->select();
		$temp = array();
		if($data)
		{
			foreach($data as $k=>$v)
			{	
				$temp[$k] = $v;
			}
		}
		S('type',$temp);
	}

	/**
	 * [get_type_all 获取所有商品类型]
	 * @return [type] [description]
	 */
	public function get_type_all()
	{
		return $this->type;
	}

	/**
	 * [add_type 添加类型]
	 */
	public function add_type()
	{
		return $this->add();

	}

	/**
	 * [edit_type 编辑类型]
	 * @return [type] [description]
	 */
	public function edit_type()
	{
		$this->save();
	}

	/**
	 * [find_one 查找文档类型一条信息]
	 * @param  [type] $typeid [description]
	 * @return [type]         [description]
	 */
	public function find_one($typeid)
	{
		return $this->find($typeid);
	}


	/**
	 * [delete_type 删除文档分类]
	 * @param  [type] $typeid [description]
	 * @return [type]         [description]
	 */
	public function delete_type($typeid)
	{
		if(D('Attr')->check_attr_by_tyleid($typeid))
		{
			$this->error='请先删除文档类型中的属性';
			return false;
		}
		$this->delete($typeid);
		return ture;
	}


	public function delete_check()
	{
		// 验证
		$typeid = I('post.typeid');
		if(empty($typeid))
		{
			$this->error='没有信息用于删除';
			return false;
		}
		// 删除
		foreach($typeid as $k=>$v)
		{
			if(!$this->delete_type($v))
				return false;
		}
		return true;
	}

	/**
	 * [get_field 获取指定的值]
	 * @param  [type] $typeid [description]
	 * @param  string $field  [description]
	 * @return [type]         [description]
	 */
	public function get_field($typeid,$field='typename')
	{
		return $this->where(array('typeid'=>$typeid))->getField($field);
	}



	// 更新更新缓存
	public function _after_insert($data,$options)
	{
		$this->update_cache();
	}
	public function _after_update($data,$options)
	{
		$this->update_cache();
	}
	public function _after_delete($data,$options)
	{
		$this->update_cache();
	}
}